import './lib.dart';

void main() {
  // 一、定义Person类
  // 构造函数
  Person person = Person();
  // 属性赋值
  person.name = 'Jack';
  person.age = 18;
  print(person.name);
  print(person.age);
  // 调用方法
  person.eat();

  // 二、定义Person类
  // 默认构造函数
  Person2 person2 = Person2('L', 20);
  person2.say();

  // 三、定义Person类 - 简写
  // 自定义与类同名构造函数
  Person3 person3 = Person3('LH', 25);
  person3.say();

  // 四、命名构造函数
  // 命名构造函数
  Person4 person4 = Person4.create('LHL', 30);
  person4.say();

  // 五、私有属性和方法
  // 仅供自身使用的属性和方法，其他外部文件和类无法访问
  LibDart libDart = LibDart();
  libDart.name = 'LibDart Name';
  print('私有属性和方法：' + libDart.name.toString());
  libDart.go();
}

// 四、命名构造函数
class Person4 {
  // 简写命名构造函数
  // Person4(this.name, this.age);
  Person4.create(this.name, this.age);
  // 1. 属性
  String? name;
  int? age;

  // 2. 方法
  say() {
    print('$name今年$age岁');
  }
}

// 三、定义Person类 - 简写
class Person3 {
  // 构造
  Person3(this.name, this.age);
  // 1. 属性
  String? name;
  int? age;

  // 2. 方法
  say() {
    print('$name今年$age岁');
  }
}

// 二、定义Person类
class Person2 {
  // 默认构造函数
  Person2(String name, int age) {
    this.name = name;
    this.age = age;
  }
  // 1. 属性
  String? name;
  int? age;

  // 2. 方法
  void say() {
    print('$name今年$age岁');
  }
}

// 一、定义Person类
class Person {
  // 1. 属性
  String? name;
  int? age;

  // 2. 方法
  void eat() {
    print('我是干饭人');
  }
}
